package com.xygz.orm;

import com.xygz.orm.constants.ORMConstants;
import com.xygz.orm.enums.DbType;
import com.xygz.orm.exception.ORMException;

import javax.sql.ConnectionPoolDataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * 数据源
 *
 * @author xiyuan-lgz 2023-08-13 @version v1.0.0 新建与整理
 */
@SuppressWarnings("all")
public interface ORMSource extends ORMConstants {
    
    /**
     * 获取数据库 ID
     *
     * @return 数据库ID
     */
    public String getId();
    
    // /**
    //  * 获取数据库类型
    //  *
    //  * @return 数据库类型
    //  */
    // public DbType getType();
    
    /**
     * 是否为默认数据库
     *
     * @return true|false
     */
    public boolean isDefault();
    
    public boolean isClosed();
    
    /**
     * 获取数据库连接池信息
     *
     * @return 获取数据库类型
     * @throws SQLException 数据库异常
     * @throws ORMException 异常信息
     */
    public Connection getConnection() throws SQLException, ORMException;
    
    
    // /**
    //  * 获取数据库信息，包括数据类型，主版本，此版本等信息
    //  *
    //  * @return 数据库信息对象
    //  * @throws SQLException 数据库异常
    //  * @throws ORMException 异常信息
    //  */
    // public ServerInfo getServerInfo() throws SQLException, ORMException;
    //
    /**
     * 获取数据库链接配置信息
     *
     * @return 数据库链接配置信息
     */
    public ORMParameter getParameter();
    
    /**
     * 关闭数据款
     *
     * @throws SQLException 数据库异常
     * @throws ORMException 异常信息
     */
    public void close() throws SQLException, ORMException;
}
